<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Андрей
 * Date: 11.05.12
 * Time: 21:20
 * To change this template use File | Settings | File Templates.
 */

    /*
     * Контроллер авторизации пользователя
     */

    class RegistrationController extends ControllerAbstract
    {
        /*
         * Просто страничка регистрации
         */
        public function index()
        {
            $user = UserModelMapper::getCurrentUser();
            // Если пользователь авторизован, то на свою страничку
            if ( $user->isAuthorized() )
            {
                header("Location: http://myblog.local/users/" . $user->getLogin());
                return ;
            }

            $this->_view->setRenderTemplate('registrationPage.phtml');
        }

        /*
         *  Процесс регистрации
         */
        public function enter()
        {
            // моделька
            $user = UserModelMapper::getCurrentUser();

            // авторизованных на свою страницу
            if ( $user->isAuthorized() )
            {
                header("Location: http://myblog.local/users/" . $user->getLogin());
                return ;
            }

            // щелчок по кнопке, зарегистрировать
            if ( !isset($_POST['registrate']) )
            {
                header("Location: http://myblog.local/reg/");
                return ;
            }

            // мэппер
            $uMapper = new UserModelMapper();

            // установить данные регистрации
            $user->setLogin($_POST['userLogin'])
                 ->setPassword($_POST['userPassword'])
                 ->setPasswordHash( md5($_POST['userPassword']));

            /*
             *   Дальше идут проверки валидности
             */

            // массив ошибок
            $this->_view->validationErrors = array();

            // занят логин
            if (! $uMapper->isLoginFree($user) )
            {
                $this->_view->validationErrors['loginReserved'] = 'Логин занят';
            }
            // правильность логина
            if ( !DataValidation::login($user->getLogin()) )
            {
                $this->_view->validationErrors['wrongLogin'] = 'Неправильный логин';
            }
            // правильность пароля
            if ( !DataValidation::password($user->getPassword()) )
            {
                $this->_view->validationErrors['wrongPassword'] = 'Неправильный логин';
            }
            // сравнение паролей введенных
            if ( $user->getPassword() != $_POST['userPasswordConfirm'])
            {
                $this->_view->validationErrors['differentPasswords'] = 'Пароли не совпадают';
            }

            

            // если есть ошибки
            // закончить все дела
            // и вернуть на страницу регистрации
            // с ошибками
            if ( !empty($this->_view->validationErrors) )
            {
                $this->_view->setRenderTemplate('registrationPage.phtml');
                return ;
            }
            

            /*
             * Если дошли до сюда, то все впорядке, можно
             * регистрировать
             */

            if ( $uMapper->register($user) )
            {
                // удачно зарегистрированы =)
                header("Location: http://myblog.local/auth/");
                return ;
            } else{
                // если что-то случилось на серваке
                // то вернуть сообщение об этом
                $this->_view->validationErrors['serverError'] = 'Ошибка регистрации на сервере';
                $this->_view->setRenderTemplate('registrationPage.phtml');
            }

        }
        
    }
